package com.gzsxy.esjy.sign.service;



import com.gzsxy.esjy.sign.dto.AndroidSignProtocolDto;
import com.gzsxy.esjy.sign.dto.InnerSignDto;
import com.gzsxy.esjy.sign.dto.ScreenSignProtocolDtoDto;

import javax.servlet.http.HttpServletRequest;

/**
 * @author zhangxiaolong
 * @since 2022/7/15
 */
public interface GSSignBusinessService {

    /**
     * 保存签名文件
     *
     * @param signId  唯一标识
     * @param request 输入流
     */
    void uploadPdf(String signId, HttpServletRequest request);

    /**
     * 获取安卓签名后base64
     *
     * @param signId 业务标识
     * @return
     */
    String getSignCachePdfBase64(String signId);

    /**
     * 获取签名文件上传地址
     *
     * @param signId 唯一标识
     * @return 上传文件地址
     */
    String getUploadPdfUrl(String signId);

    /**
     * 安卓板签名处理
     *
     * @param androidSignDto 签名信息
     * @param id             业务标识
     */
    void androidSignOk(AndroidSignProtocolDto androidSignDto, String id);

    /**
     * 投屏板-获取签名回调，http接口
     *
     * @return 签名l回调地址
     */
    String getSignOkUrl();

    /**
     * 投屏板-签名处理
     *
     * @param screenSignProtocolDto 签名信息
     */
    void signOk(ScreenSignProtocolDtoDto screenSignProtocolDto);

    /**
     * 签名确认
     *
     * @param signDto 签名信息
     */
    void signAck(InnerSignDto signDto);

    /**
     * 签名成功
     *
     * @param signDto 签名信息
     */
    void signSuccess(InnerSignDto signDto);

    /**
     *  取消签名
     *
     * @param signDto        取消签名
     * @param isDeviceCancel 是否设备取消
     */
    void cancelSign(InnerSignDto signDto, boolean isDeviceCancel);

    /**
     * 设备状态处理
     * @param signDto 签名实体
     */
    public void deviceStatus(InnerSignDto signDto);

    public long getSignTimeOut();

    public void signException(InnerSignDto signDto);
}
